package com.xiaobo.client;



import com.xiaobo.util.HttpUtil;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.KeyEvent;

import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.View.OnClickListener;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;


public class MainActivity  extends Activity {
	// 以下三变量在DataInit中初始化
	private String swjgmc;
	private String username;
	private String account;// 用户帐号
	private String swjgdm;// 机关代码
	// 后台返回的人员信息Key，在以后所有调用后台数据时，
	// 必须把这个Key值传给后台，否则，后台返回null
	private String userKey;	
	//进度条
	ProgressDialog pb1;
	WebView wv;
	
	
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		Window win = getWindow();
		win.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
				WindowManager.LayoutParams.FLAG_FULLSCREEN);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		setContentView(R.layout.mainindexlayout);


		// 添加搜索条件框得到或失去焦点的监听

		// tv_tj.setText("请输入查询条件!");
		pb1 = new ProgressDialog(MainActivity.this);
		pb1.setProgressStyle(ProgressDialog.STYLE_SPINNER);
		pb1.setMessage("数据载入中，请稍候！");

		DataInit();
	}


	void DataInit() {
		// 初始化本表单数据
		Intent intent = this.getIntent();
		Bundle bundle = intent.getExtras();
		
		account = bundle.getString("account");// 用户名称
		swjgdm = bundle.getString("swjgdm");// 税务机关代码
		swjgmc = bundle.getString("swjgmc");// 税务机关名称
		username = bundle.getString("username");// 人员姓名

		// 后台返回的人员信息Key，在以后所有调用后台数据时，
		// 必须把这个Key值传给后台，否则，后台返回null
		userKey = bundle.getString("userKey");


		//显示标题
		TextView v_title = (TextView) findViewById(R.id.jk_title);
		v_title.setText("您所在模块:[管户分布明细]");
		Button bt1 = (Button) findViewById(R.id.index);
		bt1.setOnClickListener(new OnClickListener() {
			public void onClick(View v) {
				Intent intent = new Intent(MainActivity.this, MainForm.class);

				// 传递用户数据到MainActivity
				Bundle bundle = new Bundle();
				bundle.putString("username", username);//人员姓名
				bundle.putString("swjgmc", swjgmc);//所在税务机关
				bundle.putString("account", account);//帐号
				bundle.putString("swjgdm", swjgdm);//所在税务机关代码
		        

				bundle.putString("userKey",userKey);//人员Key
				intent.putExtras(bundle);
				startActivity(intent);;
			}
		});
		Button bt2 = (Button) findViewById(R.id.exit);
		bt2.setOnClickListener(new OnClickListener() {
			public void onClick(View v) {
			//	showTips();
				MainActivity.this.finish();
			}
		});
		Button bt3 = (Button) findViewById(R.id.ref);
		bt3.setOnClickListener(new OnClickListener() {
			public void onClick(View v) {
				processThread();
			}
		});		
		wv=(WebView)findViewById(R.id.v_webview);
		wv.setBackgroundColor(0);
		   wv.setWebChromeClient(new WebChromeClient(){
	        	public void onProgressChanged(WebView view,int progress){//载入进度改变而触发 
	             	if(progress==100){
	            		handler.sendEmptyMessage(1);//如果全部载入,隐藏进度对话框
	            	}   
	                super.onProgressChanged(view, progress);   
	            }   
	        });
	    	pb1=new ProgressDialog(MainActivity.this);
	    	pb1.setProgressStyle(ProgressDialog.STYLE_SPINNER);
	    	pb1.setMessage("数据载入中，请稍候！");
		
		processThread();
	}



	// 以下代码是Hanler示例代码，对于耗时的查询需要用以下代码给出进度条

	// 定义Handler直接用，不需要修改
	private Handler handler = new Handler() {
		@Override
		// 当有消息发送出来的时候就执行Handler的这个方法
		public void handleMessage(Message msg) {
			super.handleMessage(msg);
			//定义一个Handler，用于处理下载线程与UI间通讯
  	      if (!Thread.currentThread().isInterrupted())
  	      {
  	        switch (msg.what)
  	        {
  	        case 0:
  	        	pb1.show();//显示进度对话框        	
  	        	break;
  	        case 1:
  	        	pb1.hide();//隐藏进度对话框，不可使用dismiss()、cancel(),否则再次调用show()时，显示的对话框小圆圈不会动。
  	        	break;
  	        }
  	      
  	      super.handleMessage(msg);
  	    }
			
            //对于ＵＩ的更新，代码只能在这儿进行
//			pb1.dismiss();
		}
	};

	// 主进程
	private void processThread() {
		// 构建一个下载进度条
//		pb1 = ProgressDialog.show(PublicWebView.this, "查询银行信息", "正在查询……");
		new Thread() {
			@Override
			public void run() {
				//把耗时长的代码全放在这儿
				
				//耗时代码开始
				try {
					//调用后台JSP代码
					handler.sendEmptyMessage(0);

					wv.clearFormData();
					SharedPreferences shareMSG = MainActivity.this.getSharedPreferences("xt_cxdy",
							Context.MODE_WORLD_WRITEABLE | Context.MODE_WORLD_WRITEABLE);
					String cx = shareMSG.getString("cxdy", null);

					if (cx == null) {
						cx = "TTTFT";
						SharedPreferences.Editor editor = shareMSG.edit();
						editor.putString("cxdy", cx);
						editor.commit();
					}
					String str="";
					if (cx.charAt(0) == 'T') {
						str = str + " and xx.djlx_dm<>'0122' ";
					}
					if (cx.charAt(1) == 'T') {
						str = str + " and xx.djlx_dm<>'0104' ";
					}
					if (cx.charAt(2) == 'T') {
						str = str + " and xx.djlx_dm<>'0129' ";
					}
					if (cx.charAt(3) == 'T') {
						str = str + " and xx.dj_zt<>'30' ";
					}
					if (cx.charAt(4) == 'T') {
						str = str + " and xx.dj_zt not in ('50','51','52') ";
					}
					
					//调用后台JSP，调出该用户基本管户及缴税情况，并显示
					String url=HttpUtil.IpUrl+"/server/main.jsp";
					url=url+"?account="+account+"&userKey="+userKey+"&qt="+str;
					wv.loadUrl(url);

				} catch (Exception e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			
				//耗时代码结束
				//定义一个Ｍessage将查询执行结果返回到Handel,用于写ＵＩ
		//		handler.sendEmptyMessage(0);
			}
		}.start();
	}
	
	// 以下代码是系统主菜单实现模块
	// 点击Menu时，系统调用当前Activity的onCreateOptionsMenu方法，并传一个实现了一个Menu接口的menu对象供你使用
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		/*
		 * add()方法的四个参数，依次是： 1、组别，如果不分组的话就写Menu.NONE,
		 * 2、Id，这个很重要，Android根据这个Id来确定不同的菜单 3、顺序，那个菜单现在在前面由这个参数的大小决定
		 * 4、文本，菜单的显示文本
		 */
		menu.add(Menu.NONE, Menu.FIRST + 1, 1, "税票查询").setIcon(
				R.drawable.menu_001);
		// setIcon()方法为菜单设置图标，这里使用的是系统自带的图标，同学们留意一下,以
		// android.R开头的资源是系统提供的，我们自己提供的资源是以R开头的
		menu.add(Menu.NONE, Menu.FIRST + 2, 2, "发票查询").setIcon(
				R.drawable.menu_002);
		menu.add(Menu.NONE, Menu.FIRST + 3, 3, "系统设置").setIcon(
				R.drawable.menu_003);
		menu.add(Menu.NONE, Menu.FIRST + 4, 4, "版本更新").setIcon(
				R.drawable.menu_004);
		menu.add(Menu.NONE, Menu.FIRST + 5, 5, "关于..").setIcon(
				R.drawable.menu_005);
		menu.add(Menu.NONE, Menu.FIRST + 6, 6, "退出").setIcon(
				R.drawable.menu_exit);
		// return true才会起作用
		return true;
	}

	// 菜单项被选择事件
	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		switch (item.getItemId()) {
		case Menu.FIRST + 1:

			//税票查询
			Bundle bundle = new Bundle();
			Intent intent4 = new Intent(MainActivity.this,
					syscx_sp.class);
			bundle.putString("account", account);
			bundle.putString("swjgdm",swjgdm);
			bundle.putString("userKey", userKey);
			intent4.putExtras(bundle);
			startActivity(intent4);
			break;
		case Menu.FIRST + 2:
			Toast.makeText(this, "此功能正在开发中.....", Toast.LENGTH_LONG).show();
			break;
		case Menu.FIRST + 3:
			Intent intent = new Intent(MainActivity.this, SysTab.class);
			startActivity(intent);
			break;
		case Menu.FIRST + 4:
			Intent intent1 = new Intent(MainActivity.this, UpdateActivity.class);
			startActivity(intent1);
			break;
		case Menu.FIRST + 5:
			Toast.makeText(this, "此功能正在开发中.....", Toast.LENGTH_LONG).show();
			break;
		case Menu.FIRST + 6:
			this.showTips();
			// this.finish();
			break;
		}
		return false;
	}

	// 选项菜单被关闭事件，菜单被关闭有三种情形，menu按钮被再次点击、back按钮被点击或者用户选择了某一个菜单项
	@Override
	public void onOptionsMenuClosed(Menu menu) {
		// Toast.makeText(this, "选项菜单关闭了", Toast.LENGTH_LONG).show();
	}

	// 菜单被显示之前的事件
	@Override
	public boolean onPrepareOptionsMenu(Menu menu) {
		// Toast.makeText(this,
		// "选项菜单显示之前onPrepareOptionsMenu方法会被调用，你可以用此方法来根据打当时的情况调整菜单",
		// Toast.LENGTH_LONG).show();
		// 如果返回false，此方法就把用户点击menu的动作给消费了，onCreateOptionsMenu方法将不会被调用
		return true;
	}
	
	
	// 以下代码是退出提示代码段
	private void showTips() {
		AlertDialog alertDialog = new AlertDialog.Builder(MainActivity.this)
				.setTitle("退出程序").setMessage("您确认要退出吗？")
				.setPositiveButton("确定", new DialogInterface.OnClickListener() {
					public void onClick(DialogInterface dialog, int which) {
						pb1.dismiss();
						MainActivity.this.finish();
					}
				})
				.setNegativeButton("取消", new DialogInterface.OnClickListener() {
					public void onClick(DialogInterface dialog, int which) {
						return;
					}
				}).create(); // 创建对话框
		alertDialog.show(); // 显示对话框
	}

	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
			MainActivity.this.finish();
			return false;
		}
		return false;
	}
}
